INotifyPropertyChanged ইন্টারফেস ব্যবহার করা

Microsoft Technologies - এমভিভিএম (MVVM) ViewModel তৈরি এবং কনফিগারেশন (Creating and Configuring ViewModel) |
154
154

INotifyPropertyChanged ইন্টারফেস MVVM প্যাটার্নে ব্যবহৃত হয় ViewModel এবং View এর মধ্যে ডেটা বাইন্ডিংয়ের মাধ্যমে ডেটার পরিবর্তন সঠিকভাবে উপস্থাপন করতে। যখন ViewModel-এর কোনো প্রপার্টির মান পরিবর্তন হয়, তখন INotifyPropertyChanged ইন্টারফেস View-এ সেই পরিবর্তনটি স্বয়ংক্রিয়ভাবে প্রতিফলিত করতে সাহায্য করে। এটি View এবং ViewModel এর মধ্যে সিঙ্ক্রোনাইজেশন বজায় রাখে, যাতে ব্যবহারকারীর ইন্টারঅ্যাকশন এবং ডেটার আপডেট একটি স্থিতিশীলভাবে সম্পাদিত হয়।


INotifyPropertyChanged এর ভূমিকা

INotifyPropertyChanged ইন্টারফেস একটি ইভেন্ট প্রদান করে যার মাধ্যমে আপনি জানাতে পারেন যে একটি প্রপার্টি পরিবর্তিত হয়েছে। যখন আপনি একটি প্রপার্টি আপডেট করেন, ইভেন্টটি ট্রিগার হবে এবং সেই পরিবর্তন View-এ রিফ্লেক্ট হবে।

এটি মূলত ViewModel-এ ব্যবহৃত হয় যাতে View ডেটা পরিবর্তনের প্রতি প্রতিক্রিয়া জানাতে পারে। যখন কোনো প্রপার্টি পরিবর্তন হয়, তখন ইভেন্টটি View-এ সংশ্লিষ্ট UI উপাদানকে আপডেট করার জন্য ট্রিগার হয়।


INotifyPropertyChanged ইন্টারফেসের ব্যবহার

INotifyPropertyChanged ইন্টারফেস ব্যবহার করার জন্য আপনাকে দুটি প্রধান উপাদান প্রয়োজন:

  1. PropertyChanged ইভেন্ট – যা পরিবর্তন হওয়া প্রপার্টি সম্পর্কে জানায়।
  2. OnPropertyChanged মেথড – যেটি ইভেন্টটিকে ট্রিগার করে এবং প্রপার্টির নাম পাঠায়।

নিচে একটি সাধারণ উদাহরণ দেয়া হলো যা দেখাবে কীভাবে INotifyPropertyChanged ব্যবহার করতে হয়।


উদাহরণ:

Step 1: INotifyPropertyChanged ইন্টারফেস ইমপ্লিমেন্ট করা

using System.ComponentModel;

public class ProductViewModel : INotifyPropertyChanged
{
    private string _name;
    private decimal _price;

    // INotifyPropertyChanged ইভেন্ট
    public event PropertyChangedEventHandler PropertyChanged;

    // প্রপার্টি পরিবর্তনের সময় ইভেন্ট ট্রিগার করতে OnPropertyChanged মেথড ব্যবহার করা হয়
    protected virtual void OnPropertyChanged(string propertyName)
    {
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
    }

    // Name প্রপার্টি
    public string Name
    {
        get { return _name; }
        set
        {
            if (_name != value)
            {
                _name = value;
                OnPropertyChanged(nameof(Name));  // PropertyChanged ইভেন্ট ট্রিগার করা
            }
        }
    }

    // Price প্রপার্টি
    public decimal Price
    {
        get { return _price; }
        set
        {
            if (_price != value)
            {
                _price = value;
                OnPropertyChanged(nameof(Price));  // PropertyChanged ইভেন্ট ট্রিগার করা
            }
        }
    }
}

Step 2: ViewModel-এ ডেটা বাইন্ডিং ব্যবহার করা

এখন, ProductViewModel ক্লাসে যে প্রপার্টি পরিবর্তন হবে, সেই প্রপার্টিগুলি View-এ বাইন্ড করা যেতে পারে। যেহেতু INotifyPropertyChanged ইন্টারফেসটি ইমপ্লিমেন্ট করা হয়েছে, তাই View-এ বাইন্ড করা UI উপাদানগুলি স্বয়ংক্রিয়ভাবে আপডেট হবে যখন প্রপার্টির মান পরিবর্তন হবে।

<Window x:Class="MVVMExample.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MVVM Example" Height="200" Width="400">
    <Grid>
        <TextBox Text="{Binding Name, UpdateSourceTrigger=PropertyChanged}" Margin="10" VerticalAlignment="Top"/>
        <TextBox Text="{Binding Price, UpdateSourceTrigger=PropertyChanged}" Margin="10,40,10,10" VerticalAlignment="Top"/>
    </Grid>
</Window>

Step 3: ViewModel-এ ডেটা অ্যাসাইন করা

অবশেষে, ViewModel কে View-এর DataContext হিসাবে অ্যাসাইন করা হবে, যাতে View সঠিকভাবে ViewModel থেকে ডেটা বাইন্ড করতে পারে।

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        // ViewModel কে DataContext হিসেবে সেট করা
        this.DataContext = new ProductViewModel
        {
            Name = "Product 1",
            Price = 100.0m
        };
    }
}

OnPropertyChanged মেথডের ভূমিকা

OnPropertyChanged মেথড একটি গুরুত্বপূর্ণ ফাংশন যা PropertyChanged ইভেন্টটিকে ট্রিগার করে। এই মেথডটি প্রতিটি প্রপার্টি পরিবর্তনের সময় কল করা হয়, যাতে View সংশ্লিষ্ট UI উপাদানকে আপডেট করতে পারে। এটি শুধুমাত্র সেই প্রপার্টির নাম পাস করে, যেটি পরিবর্তিত হয়েছে।

protected virtual void OnPropertyChanged(string propertyName)
{
    PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}

এতে করে View-এ বাইন্ড করা UI উপাদানগুলি PropertyChanged ইভেন্টটি ট্রিগার হওয়ার পর স্বয়ংক্রিয়ভাবে পরিবর্তিত হয়।


সুবিধা

  • ডেটা সিঙ্ক্রোনাইজেশন: INotifyPropertyChanged ডেটা বাইন্ডিংয়ের মাধ্যমে View এবং ViewModel এর মধ্যে স্বয়ংক্রিয় সিঙ্ক্রোনাইজেশন নিশ্চিত করে।
  • UI আপডেট: যখন ViewModel-এ কোনো প্রপার্টি পরিবর্তন হয়, তখন UI উপাদানগুলো তা অবিলম্বে প্রতিফলিত করে।
  • স্বয়ংক্রিয় আপডেট: UI উপাদানগুলোর মান পরিবর্তন করার জন্য আলাদা কোড লেখার দরকার নেই, বরং INotifyPropertyChanged এর মাধ্যমে তা স্বয়ংক্রিয়ভাবে ঘটে।

সারাংশ

INotifyPropertyChanged ইন্টারফেসের মাধ্যমে ViewModel এবং View এর মধ্যে সঠিক ডেটা সিঙ্ক্রোনাইজেশন সম্ভব হয়। এটি ViewModel-এর প্রপার্টি পরিবর্তনের সাথে সাথে View-এ সেই পরিবর্তনটি প্রতিফলিত করতে সহায়তা করে। INotifyPropertyChanged ব্যবহারে কোড কমে যায় এবং UI-তে পরিবর্তন আসার সাথে সাথে স্বয়ংক্রিয়ভাবে সেগুলি আপডেট হয়, যা একটি সুষ্ঠু MVVM আর্কিটেকচারের জন্য অপরিহার্য।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion